6 #ifndef _CFEXPWINDOWSSOCKET_H_ 7 #define _CFEXPWINDOWSSOCKET_H_ 12 #define SERVER_CLIENT_DEFINITION CFEXPNetServerWinClient 13 #define SERVER_CLIENT_THREAD_DEFINITION CFEXPCppThread<void(Ptr<SERVER_CLIENT_DEFINITION>), Ptr<SERVER_CLIENT_DEFINITION>> 16 #pragma comment(lib, "ws2_32.lib") 19 #define WININVSCK INVALID_SOCKET // invalid socket 20 #define WINSOCKET MAKEWORD(2, 2) // the highest version of Windows Sockets specification that the caller can use. The high-order byte specifies the minor version number; the low-order byte specifies the major version number. 21 #define WINPR_TCP IPPROTO_TCP // TCP communication protocol 23 #define WINSCTYPE SOCK_STREAM // stream socket 24 #define WINNETWRK AF_INET // internetwork protocols: UDP, TCP, etc. 25 #define WINNONADR 0 // erro for non-legitimate Internet address 26 #define WINANYADR INADDR_ANY 27 #define WINSOCSDW SD_BOTH // 0x02 -- manifest constants for shutdown() 55 #define MAX_MSG_IN_LEN 0x1000 // 1 x 4096 [B] 56 #define MAX_MSG_OT_LEN 0x1000 // 1 x 4096 [B] 110 virtual void Run ()
override;
111 virtual void Close()
override;
125 sockaddr_in _sock_server_adress;
127 void create_socket();
133 std::atomic_bool _new_macro_model;
138 std::map<std::string, t_SerializedData> _serialize_calc_data_get_map;
139 std::map<std::string, t_SerializedData> _serialize_calc_data_set_map;
155 std::function<
bool (
size_t,
size_t )> message_lchr,
156 std::function<
void (
size_t,
size_t ,
t_ENetThrdMsg)> message_sttr,
158 std::function<
void (
size_t )> state_update,
159 std::function<
bool (
size_t )> synchronizer,
165 virtual void Run ()
override;
166 virtual void Close()
override { close_connection(); }
170 bool _calculation_started;
175 void close_connection ();
177 bool run_calc_synchr_stage(
size_t stage);
179 void client_finishing ();
203 #endif // !_CFEXPWINDOWSSOCKET_H_ CFEXPNetClientWinSocketConnection(size_t client_id, std::string server_ip, size_t port, std::function< void(std::function< void(size_t)>, ICFEXPNetClientNodeService &)> main)
Definition: FEXPNetworkWinSocket.cpp:364
void set_to_default()
Definition: FEXPNetworkWinSocket.h:69
static std::map< int, const std::string > CONNECTION_ERRORS_1
Definition: FEXPNetworkWinSocket.h:41
rqs_msg()
Definition: FEXPNetworkWinSocket.h:68
#define FEXPCOMMON_ZERO_END_CHAR
Definition: FEXPCommon.h:187
virtual void AddMacroModelData(const t_ModelDataKey &key, Ptr< t_ModelDataDta > data) override
Definition: FEXPNetworkWinSocket.cpp:524
Base network interface of a client node.
Definition: FEXPNetworkInterface.h:46
#define MAX_MSG_OT_LEN
Definition: FEXPNetworkWinSocket.h:56
Windows connection errors.
Definition: FEXPNetworkWinSocket.h:36
static std::map< int, const std::string > CONNECTION_ERRORS_5
Definition: FEXPNetworkWinSocket.h:45
static t_ENetMessage win_read_from_Socket(RESPONSE &response, SOCKET socket, std::vector< std::string > &read_data)
Definition: FEXPNetworkWinSocket.cpp:43
static std::string & StrTrim(std::string &str)
Definition: FEXPCommon.cpp:119
virtual Ptr< std::map< size_t, Ptr< t_ModelData > > > ReadInstruction() override
Definition: FEXPNetworkWinSocket.cpp:480
std::string get_send_data()
Definition: FEXPNetworkWinSocket.h:80
Definition: FEXPCommon.h:276
static t_ENetMessage WinSocketDataRead(SOCKET socket, CFEXPNETWinMessage::REQUEST &request, CFEXPNETWinMessage::RESPONSE &response, t_ModelData &data)
Definition: FEXPNetworkWinSocket.cpp:186
double t_fexpcommon_ct
Definition: FEXPCommon.h:120
void set_data_to_send(const std::string &data)
Definition: FEXPNetworkWinSocket.h:70
virtual ~CFEXPNetServerWinClient()
Definition: FEXPNetworkWinSocket.cpp:563
Connection client based on Windows socket. It is placed on the side of server.
Definition: FEXPNetworkWinSocket.h:149
CFEXPNetServerWinClient(SOCKET socket, std::string &ip, size_t id, std::string &server_ip, std::function< t_ENetThrdMsg(size_t, size_t)> message_gttr, std::function< bool(size_t, size_t)> message_lchr, std::function< void(size_t, size_t, t_ENetThrdMsg)> message_sttr, std::function< Ptr< t_NetCalcData >(size_t)> clcdata_gttr, std::function< void(size_t)> state_update, std::function< bool(size_t)> synchronizer, std::function< void(size_t, t_fexpcommon_ct)> dtmacro_sttr, std::function< void(size_t, Ptr< CFEXGeomTools::t_BoundBox >, size_t)> mdmacro_sttr)
Definition: FEXPNetworkWinSocket.cpp:548
ENETServerThreadMesage
Communication messages within the FEXP server.
Definition: FEXPNetworkInterface.h:155
virtual void Close() override
Definition: FEXPNetworkWinSocket.h:166
virtual void SendInstruction(size_t message, Ptr< t_ModelData > data) override
Definition: FEXPNetworkWinSocket.cpp:502
static std::map< int, const std::string > CONNECTION_ERRORS_2
Definition: FEXPNetworkWinSocket.h:42
static void WinSocketDataWrite(SOCKET socket, CFEXPNETWinMessage::REQUEST &request, CFEXPNETWinMessage::RESPONSE &response, t_ModelData &data, t_ENetMessage message)
Definition: FEXPNetworkWinSocket.cpp:314
std::map< t_ModelDataKey, Ptr< t_ModelDataDta > > t_ModelData
Definition: FEXPDataContainer.h:15
virtual ~CFEXPNetClientWinSocketConnection()
Definition: FEXPNetworkWinSocket.cpp:372
EMainNETCommunicationPoint
Items of communication protocol.
Definition: FEXPNetworkInterface.h:95
Connection client based on Windows socket. It is placed on the side of individual workstations within...
Definition: FEXPNetworkWinSocket.h:101
virtual void Run() override
Definition: FEXPNetworkWinSocket.cpp:449
#define MAX_MSG_IN_LEN
Definition: FEXPNetworkWinSocket.h:55
virtual void Run() override
Definition: FEXPNetworkWinSocket.cpp:579
virtual Ptr< t_ModelData > GetMacroModelData() override
Definition: FEXPNetworkWinSocket.cpp:517
static std::map< int, const std::string > CONNECTION_ERRORS_3
Definition: FEXPNetworkWinSocket.h:43
static std::map< int, const std::string > CONNECTION_ERRORS_4
Definition: FEXPNetworkWinSocket.h:44
rsp_msg()
Definition: FEXPNetworkWinSocket.h:78
struct rsp_msg { char record[MAX_MSG_OT_LEN] RESPONSE
Content of response message.
Definition: FEXPNetworkWinSocket.h:77
Network service on the client workstation side.
Definition: FEXPNetworkInterface.h:184
static bool win_write_to_socket(REQUEST &request, SOCKET socket, const std::string &send_data)
Definition: FEXPNetworkWinSocket.cpp:12
Base interface for server clients.
Definition: FEXPNetworkInterface.h:250
std::string t_ModelDataKey
Definition: FEXPDataContainer.h:13
auto __cdecl main(int argv, char *argc[]) -> int
Main function (single workstation).
Definition: fexp_main.cpp:13
Communication message.
Definition: FEXPNetworkWinSocket.h:59
virtual void Close() override
Definition: FEXPNetworkWinSocket.cpp:428
struct rqs_msg { char record[MAX_MSG_IN_LEN] REQUEST
Content of request message.
Definition: FEXPNetworkWinSocket.h:67